//package com.dc.datacollect.components.zip;
//
//import java.io.*;
//import java.util.Arrays;
//import java.util.Enumeration;
//import java.util.List;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipFile;
//import java.util.zip.ZipOutputStream;
//
///**
// * zip工具
// *
// * @author zhuangjie
// * @date 2023/06/23
// */
//public class ZIPUtils_请忽略 {
//
//    /**
//     * 功能:压缩多个文件成一个zip文件
//     * @param srcfile：源文件列表
//     * @param zipfile：压缩后的文件
//     */
//    public static void zipFiles(File[] srcfile, File zipfile) {
//        byte[] buf = new byte[1024];
//        try {
//            //ZipOutputStream类：完成文件或文件夹的压缩
//            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));
//            for (int i = 0; i < srcfile.length; i++) {
//                FileInputStream in = new FileInputStream(srcfile[i]);
//                out.putNextEntry(new ZipEntry(srcfile[i].getName()));
//                int len;
//                while ((len = in.read(buf)) > 0) {
//                    out.write(buf, 0, len);
//                }
//                out.closeEntry();
//                in.close();
//            }
//            out.close();
//            System.out.println("压缩完成.");
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
////    public static void zipFiles(List<File> srcfile, File zipfile) {
////        zipFiles(srcfile.toArray(new File[srcfile.size()]),zipfile);
////    }
//
//    /**
//     * 功能:解压缩
//     * @param zipfile：需要解压缩的文件
//     * @param descDir：解压后的目标目录
//     */
//    public static void unZipFiles(File zipfile, String descDir) {
//        try {
//            ZipFile zf = new ZipFile(zipfile);
//            for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {
//                ZipEntry entry = (ZipEntry) entries.nextElement();
//                String zipEntryName = entry.getName();
//                InputStream in = zf.getInputStream(entry);
//                OutputStream out = new FileOutputStream(descDir + zipEntryName);
//                byte[] buf1 = new byte[1024];
//                int len;
//                while ((len = in.read(buf1)) > 0) {
//                    out.write(buf1, 0, len);
//                }
//                in.close();
//                out.close();
//                System.out.println("解压缩完成.");
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    public static void compressFiles(File[] files, File zipFile) {
//        try {
//            FileOutputStream fos = new FileOutputStream(zipFile);
//            ZipOutputStream zos = new ZipOutputStream(fos);
//
//            for (File file : files) {
//                compress(file, zos, "");
//            }
//
//            zos.close();
//            fos.close();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//
//    private static void compress(File file, ZipOutputStream zos, String parentFolder) throws IOException {
//        if (file.isDirectory()) {
//            // 压缩文件夹
//            String folderPath = parentFolder + file.getName() + "/";
//            zos.putNextEntry(new ZipEntry(folderPath));
//
//            File[] children = file.listFiles();
//            for (File child : children) {
//                compress(child, zos, folderPath);
//            }
//        } else {
//            // 压缩文件
//            FileInputStream fis = new FileInputStream(file);
//            zos.putNextEntry(new ZipEntry(parentFolder + file.getName()));
//
//            byte[] buffer = new byte[1024];
//            int length;
//            while ((length = fis.read(buffer)) > 0) {
//                zos.write(buffer, 0, length);
//            }
//
//            fis.close();
//        }
//    }
//
//    /**功能:
//     * @param args
//     */
//    public static void main(String[] args) throws IOException {
//        File file = new File("D:\\88\\2022-2023学年第2学期JavaEE企业级应用开发综合实训资料.1");
//        CompressFileWrap compressFileWrap = new CompressFileWrap();
//        compressFileWrap.setFile(file);
//        compressFileWrap.setFilename("哈哈");
//        compressFileWrap.setPath("/a/b/");
//
//        File zipFile = new File("D:\\88.zip");
//
//        ZIPUtils.zipFiles(Arrays.asList(compressFileWrap),zipFile);
//
//    }
//
//    public static void zipFiles(List<CompressFileWrap> fileWrapList, File zipfile) {
//        // 确保必要的目录存在
//        String parent = zipfile.getParent();
//        if (parent != null) {
//            File parentDir = new File(parent);
//            if (!parentDir.exists()) {
//                parentDir.mkdirs();
//            }
//        }
//        byte[] buf = new byte[1024];
//        CompressFileWrap[] compressFileWraps = fileWrapList.toArray(new CompressFileWrap[fileWrapList.size()]);
//        try {
//            //ZipOutputStream类：完成文件或文件夹的压缩
//            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));
//            for (int i = 0; i < compressFileWraps.length; i++) {
//                CompressFileWrap compressFileWrap = compressFileWraps[i];
//                FileInputStream in = new FileInputStream(compressFileWrap.getFile());
//                String initFilename = compressFileWrap.getFile().getName();
//                String suffixName = initFilename.substring(initFilename.lastIndexOf("."));
//                if (compressFileWrap.getFilename() != null) {
//                    out.putNextEntry(new ZipEntry(compressFileWrap.getFilename()+suffixName));
//                }else {
//                    out.putNextEntry(new ZipEntry(initFilename));
//                }
//                int len;
//                while ((len = in.read(buf)) > 0) {
//                    out.write(buf, 0, len);
//                }
//                out.closeEntry();
//                in.close();
//            }
//            out.close();
//            System.out.println("压缩完成.");
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//}